/*
 *  2010-2021   @date: 2024-12-02 22:45:35
 * author : Ronbinson    [ demo_user ]
 */

#include <demo_user.h>
#include <gd32f30x.h>
#include <stdbool.h>
#include <stdio.h>

#include "pidAlgo.h"

static pidType g_fanPid;

/* pid 风机 采样时间 （如10ms）根据系统实际模型设定 , 定时器回调或者中断 */
static void fanPidCb(TimerHandle_t xTimer)
{
    /* 传感器采集 */
    bool ret = drvPressureProcess(&g_vac);
    PRINT_ERR_RET_VOID(!ret, "\r\n");

    /* g_vac传感器数据做输入 */
    pidSetActVal(&g_fanPid, g_vac);
    positionPid(&g_fanPid);
    /* 设置pwm */
    drvFanSetPwm(g_fanPid.ukPos); /* g_fanPid.ukPos: g_fanPwm */
}

int main(char argc, char** argv)
{
    pidInit(0.83, 0.2, 0.83, &g_fanPid); /*50ms*/
    pidSetUkMaxMin(&g_fanPid, 800, 200);

    pidSetTarget(&g_fanPid, 2600);
    while (1) {
        delayMs(10);
    }
}
